package com.vim.modules.mall.model.mallOrder;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.vim.modules.mall.model.base.BaseEntity;
import lombok.Data;

import java.util.Date;

/**
 * 订单
 * @author bbbscxy
 * @since 2020-08-22
 */
@Data
public class MallOrder extends BaseEntity {

    private static final long serialVersionUID=1L;

    /**
     * 订单编号
     */
    private String orderSn;

    /**
     * 店铺ID
     */
    private Long storeId;

    /**
     * 会员ID
     */
    private Long memberId;

    /**
     * 购物车总金额（分）
     */
    private Long cartTotalMoney;

    /**
     * 订单运费（分）
     */
    private Long orderFreightMoney;

    /**
     * 订单优惠（分）
     */
    private Long orderDiscountMoney;

    /**
     * 订单代金券（分）
     */
    private Long orderCashCouponMoney;

    /**
     * 支付金额（分）
     */
    private Long orderPayMoney;

    /**
     * 退款金额（分）
     */
    private Long orderReturnMoney;

    /**
     * 订单状态（0待支付 1待发货 2待收货 3已完成）
     */
    private String status;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date payTime;

    /**
     * 发货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date deliveryTime;

    /**
     * 收货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date receiveTime;

    /**
     * 完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date completeTime;

    /**
     * 订单状态
     */
    private String showStatus;

    /**
     * 订单状态（0待支付 1待发货 2待收货 3已完成）
     */
    public enum ORDER_STATUS{
        WAIT_PAY("0", "待支付"), WAIT_DELIVER("1", "等待发货"), WAIT_RECEIVE("2", "等待收货"), EVALUATE("3", "等待评价"), COMPLETE("4", "已完成"), CLOSE("20", "已关闭");
        private String value;
        private String showValue;
        ORDER_STATUS(String value, String showValue){
            this.value = value;
            this.showValue = showValue;
        }
        public String getValue() {
            return value;
        }
        public String getShowValue() {
            return showValue;
        }
    }

}
